#ifndef ROLLBACKFILECOMMAND_H
#define ROLLBACKFILECOMMAND_H

#include "base_command.h"
#include <QString>
#include <QNetworkReply>
#include <QJsonObject>

class CommandExecutor;

// RollbackFileCommand 命令类
// 负责回撤文件（获取文件信息并重新下载）
class RollbackFileCommand : public BaseCommand
{
    Q_OBJECT

public:
    explicit RollbackFileCommand(QObject *parent = nullptr);
    ~RollbackFileCommand();
    
    // 设置 QNetworkAccessManager 实例（重写基类方法以连接信号）
    void setNetworkAccessManager(QNetworkAccessManager *networkManager);
    
    // 设置 CommandExecutor 实例（用于调用下载文件命令）
    void setCommandExecutor(CommandExecutor *commandExecutor);
    
    // 执行命令
    // fileId: 要回撤的文件ID
    // 返回：是否成功发起请求（异步操作，实际结果通过信号通知）
    bool execute(const QString &fileId);

signals:
    // 回撤文件完成信号
    void rollbackFileCompleted(int resultCode, const QString &message);

private slots:
    // 处理回撤文件响应
    void handleRollbackFileResponse(QNetworkReply *reply);

private:
    // 解析回撤文件响应
    void parseRollbackFileResponse(const QJsonObject &response, const QString &fileId);
    
    // 构建请求 URL
    QString buildRequestUrl(const QString &baseUrl, const QString &fileId);

private:
    CommandExecutor *m_commandExecutor;
    QString m_pendingFileId; // 待回撤的文件ID
};

#endif // ROLLBACKFILECOMMAND_H

